package testdemo;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 黎鹤舞
 * Date: 2023-12-03
 * Time: 14:55
 */
//给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
class Solution {
    public List<List<Integer>> generate(int numRows) {
        //一共生成numRows行的二维顺序表:
        List<List<Integer>> list = new ArrayList<>(numRows);

        //实例化第一个一维顺序表:
        List<Integer> firstList = new ArrayList<>();
        firstList.add(1);
        list.add(firstList);

        //遍历行数:
        for (int i = 1; i < numRows; i++) {

            //二维顺序表内每一个元素都是一个一维顺序表，需要实例化对象
            List<Integer> curList = new ArrayList<>();

            //list.get(i)是从外层顺序表中拿到第i个元素，即第i行
            //每一行的一个元素为1
            curList.add(1);

            //先获取上一个顺序表，方面后续的操作
            List<Integer> preList = list.get(i-1);

            //中间元素(从第二个元素才开始遍历，并且要小于行数，正好筛选前两行):
            for (int j = 1; j < i; j++) {
                int sum = preList.get(j) + preList.get(j-1);
                curList.add(sum);
            }

            //最后一个元素:
            curList.add(1);

            //每一个顺序表完成之后，都要把该顺序表对象放入二维顺序表中:
            list.add(curList);
        }
        return list;
    }
}
public class Test {


}
